package jms;
import java.io.Serializable;
import javax.annotation.Resource;
import javax.ejb.MessageDriven;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDrivenContext;
import javax.inject.Inject;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
@MessageDriven(mappedName="mailQueue", 
			   activationConfig =  
		   		{
				@ActivationConfigProperty(propertyName = "destination", 
				 propertyValue = "queue/test"),
	    		@ActivationConfigProperty(propertyName = "acknowledgeMode",
	    		 propertyValue = "Auto-acknowledge"),
	            @ActivationConfigProperty(propertyName = "destinationType",
	             propertyValue = "javax.jms.Queue")
				})
public class MessageMailListener implements MessageListener, Serializable
{
	private static final long serialVersionUID = 1L;
	@Resource
	public MessageDrivenContext mdc;
	@Inject mail.EmailService mail;
	@Override
	public void onMessage(Message inMessage) //ejecutar automaticamente cada vez q el mensaje esta en la cola
	{
		try 
	    {
	    	MapMessage 	msg = (MapMessage) inMessage;//convierte el mensaje a MapMessage
	    	String asunto =msg.getString("asunto");//extrae los campos del mensaje
	    	String texto=msg.getString("texto");
	    	String destinos[]=msg.getString("destinos").split(";");
	    	System.out.println("Nuevo mail a enviar: "+asunto+"\n"+texto+"\n\n");
	    	for(String des:destinos)//envia los mails a los  destinos
	    	{	
	    		System.out.println("Enviando mail a: "+des);
	    		mail.enviarEmail(asunto,des, texto); 
	    	}
	    } catch (JMSException e) {
	    	mdc.setRollbackOnly();//mensaje que pueda ser atendido, va a tratar de enviar
	    	e.printStackTrace();
	    } catch (Throwable te) {
	    	//agregue
	    	Throwable e = null;
			e.printStackTrace();
	    }
	}
}